﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using ENTIDADES;

namespace DATA
{
    public class ProductoDAO
    {
        private static ProductoDAO instance = null;
        private ProductoDAO() { }
        public static ProductoDAO getInstance()
        {
            if (instance == null)
            {
                instance = new ProductoDAO();
            }
            return instance;
        }

        public List<Producto> listadoProducto(int idCategoria)
        {
            List<Producto> lstResultado = null;
            Conexion strCNN = new Conexion();
            SqlConnection cnn = new SqlConnection(strCNN.obtenerConexion());
            cnn.Open();

            String query = "select idproducto,descripcion,precio,estado,idcategoria from producto where (idcategoria=" + idCategoria + " OR " + idCategoria + "=0) AND estado=1";
            SqlCommand objComm = new SqlCommand(query, cnn);
            SqlDataReader reader = objComm.ExecuteReader();

            lstResultado = new List<Producto>();
            while (reader.Read())
            {
                Producto objProducto = new Producto();
                objProducto.idproducto = Convert.ToInt32(reader["idproducto"]);
                objProducto.descripcion = (reader["descripcion"]).ToString();
                objProducto.precio = Convert.ToDecimal(reader["precio"]);
                objProducto.estado = Convert.ToBoolean(reader["estado"]);
                objProducto.objCategoria = CategoriaDAO.getInstance().get(Convert.ToInt32(reader["idcategoria"]));

                lstResultado.Add(objProducto);
            }
            cnn.Close();

            return lstResultado;
        }

        public Producto get(int idProducto)
        {
            Producto objProducto = null;

            Conexion strCNN = new Conexion();
            SqlConnection cnn = new SqlConnection(strCNN.obtenerConexion());
            cnn.Open();
            String query = "select idproducto,descripcion,precio,estado,idcategoria from producto where idproducto=" + idProducto;
            SqlCommand objComm = new SqlCommand(query, cnn);
            SqlDataReader reader = objComm.ExecuteReader();

            if (reader.Read())
            {
                objProducto = new Producto();
                objProducto.idproducto = Convert.ToInt32(reader["idproducto"]);
                objProducto.descripcion = (reader["descripcion"]).ToString();
                objProducto.precio = Convert.ToDecimal(reader["precio"]);
                objProducto.estado = Convert.ToBoolean(reader["estado"]);
                objProducto.objCategoria = CategoriaDAO.getInstance().get(Convert.ToInt32(reader["idcategoria"]));
            }
            cnn.Close();

            return objProducto;
        }
    }
}
